# -*- coding:utf-8 -*-
# 本程序判断一个数字是不是回文数
# 方法一：
def is_palindrome(n):
	return str(n) == str(n)[::-1]

# 方法二：比如12321,每次通过除以10和对10取余分别得到前半部分a和后半部分b，但是要注意是整数，所以要进行强制转换
# 第一步 a = 1232 b = 1 ;a - b > 0执行循环
# b = 10 + 2 = 12 a = 123 再循环
# b = 120 + 3 = 123 a = 12 a < b结束循环
# b = 12 a = 12 if(a == b)结果是True
# 但是要注意有一种特殊情况 
# 当 n 为 10 的整数时， 比如 10，20，100...，此时 b = n % 10
# 比如 20，a = 2 b = 0，执行循环 
# b = 0 + 2
# a = int(2 / 10) = 0
# b = int(2 / 10) = 0
# a = b = 0
# 但这种情况显然是不符合回文数规定的
# 
# 
# def is_palindrome(n):
# 以下两行是优化，加快判断速度，不要不会影响结果
    # if(n < 100 and n % 11 == 0):
    #     return True

    # if(n % 10 == 0):
    #     return False
    # a = int(n / 10)
    # b = n % 10
    # while(a - b > 0):
    #     b = b * 10 + a % 10
    #     a = int(a / 10)
    # if a < b:
    #     b = int(b / 10)
    # return a == b
	
# 测试:
output = filter(is_palindrome, range(1, 1000))
print('1~1000:', list(output))
if list(filter(is_palindrome, range(1, 200))) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191]:
    print('测试成功!')
else:
    print('测试失败!')